//
//  MWXmppUnit.h
//  MWXmppUnit
//
//  Created by liu nian on 3/17/16.
//  Copyright © 2016  http://iliunian.cn. All rights reserved.
//
//  该类是美味不用等XMPP数据管理类，包含有数据本身的业务和根据网络判断进行重连以及信息的收取功能
//  由于本组件含有自身的功能业务，所以仅仅是本身项目使用，不具备工具组件。
//  该管理类使用CocoaPods管理第三方库， 依赖XMPPFramework，JSONKit-NoWarning，AFNetworking。

#import <Foundation/Foundation.h>

@protocol MWXmppUnitConfigure;
@interface MWXmppUnit : NSObject
@property (nonatomic, assign) id<MWXmppUnitConfigure>configureDelegate;

- (void)xmppConnect;
- (void)xmppDisconnect;
@end

@protocol MWXmppUnitConfigure <NSObject>

@required
/** xmpp config*/
- (NSString *)xmppHostName;
- (NSInteger)xmppHostPort;

/** user config*/
- (NSString *)xmppUserName;
/** 该密码无须加密，当在注册的时候需要明文注册，连接XMPP时将进行MD5加密*/
- (NSString *)xmppPassword;

@optional
/**
 *  当XMPP连接失败的时候回调该方法，此时是不会再重连的，若要进行重连需要手动执行 "- (void)xmppConnect";
 *
 *  @param xmppUnit xmpp管理实例对象
 *  @param error    错误信息
 */
- (void)xmppUnit:(MWXmppUnit *)xmppUnit didDisconnectWithError:(NSError *)error;
/**
 *  xmpp收到的信息实体，该信息实体已经做过处理是信息本体body
 *
 *  @param xmppUnit    xmpp管理实例对象
 *  @param bodyMessage 信息本体字符串
 */
- (void)xmppUnit:(MWXmppUnit *)xmppUnit didReceiveBodyMessage:(NSString *)bodyMessage;
/**
 *  网络是否连接通畅,默认是可连接
 *
 *  @return 是否能联网
 */
- (BOOL)networkReachabilityStatusReachable;
@end